home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 301-325 / 311 / crobots / rabbit.r < prev    next >
Text File  |  1995-03-14  |  1KB  |  94 lines

  1. Warren Ind.
  2. Peter
  3. /* rabbit */
  4. /* rabbit runs around the field, randomly */
  5. /* and never fires;  use as a target */
  6.  
  7.  
  8. main()
  9. {
  10.  
  11.   while(1) {
  12.     go(rand(1000),rand(1000));  /* go somewhere in the field */
  13.   }
  14.     
  15. }  /* end of main */ 
  16.  
  17.  
  18.  
  19. /* go - go to the point specified */
  20.  
  21. go (dest_x, dest_y)
  22. int dest_x, dest_y;
  23. {
  24.   int course;
  25.  
  26.   course = plot_course(dest_x,dest_y);
  27.   drive(course,25);
  28.   while(distance(loc_x(),loc_y(),dest_x,dest_y) > 50)
  29.     ;
  30.   drive(course,0);
  31.   while (speed() > 0)
  32.     ;
  33. }
  34.  
  35. /* distance forumula */
  36.  
  37. distance(x1,y1,x2,y2)
  38. int x1;
  39. int y1;
  40. int x2;
  41. int y2;
  42. {
  43.   int x, y;
  44.  
  45.   x = x1 - x2;
  46.   y = y1 - y2;
  47.   d = sqrt((x*x) + (y*y));
  48.  
  49.   return(d);
  50. }
  51.  
  52. /* plot_course - figure out which heading to go */
  53.  
  54. plot_course(xx,yy)
  55. int xx, yy;
  56. {
  57.   int d;
  58.   int x,y;
  59.   int scale;
  60.   int curx, cury;
  61.  
  62.   scale = 100000;  /* scale for trig functions */
  63.  
  64.   curx = loc_x();
  65.   cury = loc_y();
  66.   x = curx - xx;
  67.   y = cury - yy;
  68.  
  69.   if (x == 0) {
  70.     if (yy > cury)
  71.       d = 90;
  72.     else
  73.       d = 270;
  74.   } else {
  75.     if (yy < cury) {
  76.       if (xx > curx)
  77.         d = 360 + atan((scale * y) / x);
  78.       else
  79.         d = 180 + atan((scale * y) / x);
  80.     } else {
  81.       if (xx > curx)
  82.         d = atan((scale * y) / x);
  83.       else
  84.         d = 180 + atan((scale * y) / x);
  85.     }
  86.   }
  87.   return (d);
  88. }
  89.     
  90. /* end of rabbit.r */
  91.  
  92.  
  93.  
  94.